OpenCV এবং TensorFlow ব্যবহার করে Computer Vision প্রজেক্ট
OpenCV এবং TensorFlow কম্পিউটার ভিশন প্রজেক্টে ব্যবহারের জন্য দুটি শক্তিশালী টুল। OpenCV মূলত ছবি এবং ভিডিও প্রসেসিংয়ের জন্য এবং TensorFlow মেশিন লার্নিং এবং ডিপ লার্নিং মডেল ট্রেনিং এবং বাস্তবায়নের জন্য ব্যবহৃত হয়। এই দুইটি টুলের সমন্বয়ে বিভিন্ন প্রজেক্ট তৈরি করা যায়, যেমন ফেস ডিটেকশন, অবজেক্ট ডিটেকশন, এবং ইমেজ ক্লাসিফিকেশন।
নিচে OpenCV এবং TensorFlow ব্যবহার করে একটি সাধারণ ফেস মাস্ক ডিটেকশন প্রজেক্টের উদাহরণ দেওয়া হলো।
প্রজেক্ট: ফেস মাস্ক ডিটেকশন
এই প্রজেক্টে আমরা ক্যামেরা ফিড থেকে ছবি নিয়ে ফেসিয়াল মাস্ক পরিহিত বা না পরিহিত অবস্থায় মুখ শনাক্ত করতে পারব।
প্রয়োজনীয় প্যাকেজসমূহ
প্রথমে নিচের প্যাকেজগুলি ইন্সটল করতে হবে:
pip install opencv-python tensorflow numpy
ধাপ ১: ডেটা সংগ্রহ ও প্রি-প্রসেসিং
- ডেটা সংগ্রহ: বিভিন্ন ডেটাসেট থেকে মাস্ক পরিহিত এবং মাস্ক ছাড়া মুখের ছবি সংগ্রহ করা। অনেক সময় Kaggle-এ Face Mask Detection Dataset নামে ডেটাসেট পাওয়া যায়।
- প্রি-প্রসেসিং: প্রতিটি ছবিকে একটি নির্দিষ্ট আকারে (যেমন 128x128 পিক্সেল) রিসাইজ করতে হবে এবং টেন্সরে রূপান্তর করতে হবে।
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# ছবির রিসাইজ এবং স্কেলিং
def preprocess_image(image):
image = cv2.resize(image, (128, 128))
image = image / 255.0 # স্কেলিং
return image
ধাপ ২: মডেল তৈরি করা (TensorFlow ব্যবহার করে)
TensorFlow ব্যবহার করে একটি কনভলিউশনাল নিউরাল নেটওয়ার্ক (CNN) মডেল তৈরি করা হবে।
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
model = Sequential([
Conv2D(32, (3,3), activation='relu', input_shape=(128, 128, 3)),
MaxPooling2D((2,2)),
Conv2D(64, (3,3), activation='relu'),
MaxPooling2D((2,2)),
Conv2D(128, (3,3), activation='relu'),
MaxPooling2D((2,2)),
Flatten(),
Dense(128, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid') # 1 বা 0 আউটপুটের জন্য
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
ধাপ ৩: মডেল প্রশিক্ষণ
ডেটাসেট থেকে ট্রেনিং এবং ভ্যালিডেশন ডেটা ব্যবহার করে মডেলটি প্রশিক্ষণ করতে হবে।
train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)
train_generator = train_datagen.flow_from_directory(
'path/to/dataset',
target_size=(128, 128),
batch_size=32,
class_mode='binary',
subset='training'
)
validation_generator = train_datagen.flow_from_directory(
'path/to/dataset',
target_size=(128, 128),
batch_size=32,
class_mode='binary',
subset='validation'
)
history = model.fit(
train_generator,
validation_data=validation_generator,
epochs=10
)
ধাপ ৪: ক্যামেরা থেকে ফেস ডিটেকশন (OpenCV ব্যবহার করে)
এই ধাপে ক্যামেরা থেকে রিয়েল-টাইম ফিড নেওয়া হবে এবং মুখে মাস্ক আছে কিনা তা সনাক্ত করা হবে।
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0) # ক্যামেরা শুরু করা
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
face = frame[y:y+h, x:x+w]
face = preprocess_image(face)
face = np.expand_dims(face, axis=0)
prediction = model.predict(face)
label = "Mask" if prediction[0][0] > 0.5 else "No Mask"
color = (0, 255, 0) if label == "Mask" else (0, 0, 255)
cv2.rectangle(frame, (x, y), (x+w, y+h), color, 2)
cv2.putText(frame, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, color, 2)
cv2.imshow("Face Mask Detection", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
ধাপ ৫: মডেলের মূল্যায়ন
প্রশিক্ষণের পরে মডেলের কার্যকারিতা বিশ্লেষণ করতে ভ্যালিডেশন ডেটাসেটের উপর মূল্যায়ন করা যেতে পারে। মডেলের দক্ষতা বৃদ্ধি করতে এপোচের সংখ্যা বাড়ানো এবং অতিরিক্ত ডেটাসেট ব্যবহার করা যেতে পারে।
উপসংহার
এই প্রজেক্টে OpenCV এবং TensorFlow ব্যবহার করে ফেস মাস্ক ডিটেকশন সিস্টেম তৈরি করা হলো। OpenCV দিয়ে ফেস ডিটেকশন করা হয় এবং TensorFlow দিয়ে মুখের বৈশিষ্ট্য বিশ্লেষণ করে মাস্ক পরিহিত বা না পরিহিত মুখ সনাক্ত করা হয়। এ ধরনের প্রকল্প স্বাস্থ্যসেবা, নিরাপত্তা ব্যবস্থা এবং সামাজিক দূরত্ব নিশ্চিতকরণে সহায়ক হতে পারে।
Read more